package main

import (
	"fmt"
	"sync"
	"time"
)
var wg sync.WaitGroup
func main() {
	// 在某些场景下我们需要同时从多个通道接收数据

	// 定义一个管道 10个数据int
	intChan := make(chan int, 10)
	for i := 0; i < 10; i++ {
		intChan <- i
	}
	// 定义一个管道 5个数据string
	stringChan := make(chan string, 5)
	for i := 0; i < 5; i++ {
		stringChan <- "hello" + fmt.Sprintf("%d",i)
	}

	// select多路复用
	// 使用select来获取channel里面的数据不需要关闭channel
	for{
		select{
		case v:=<-intChan:
			fmt.Printf("从intchan 读取数据%d\n",v)
			time.Sleep(time.Microsecond*50)
		case v:=<-stringChan:
		fmt.Printf("从stringChan读取数据%v\n",v)
		time.Sleep(time.Microsecond*50)
		default:
			fmt.Println("数据获取完毕")
			return  //退出
		}
	}
	// wg.Wait()

}